#在Makefile中，注释采用#作为前缀
# Makefile文件中可以存在若干套规则，但是一般最终目标的规则应该写在Makefile文件的最顶层，可以理解为装备合成
# 执行make命令的时候，make会搜寻目录下的Makefile文件，并把最顶层的规则的目标作为最终目标

#用于记录生成的可执行文件的路径
DIR_BIN = ./bin

#用于记录工程中库文件的路径
DIR_LIB = ./lib

#用于记录工程中头文件的路径
DIR_INC = ./inc

#用于记录工程中源文件的路径
DIR_SRC = ./src

#定义变量，用于记录可执行文件的名称
TARGET = demo

#用于记录可执行文件的完整路径
BIN_TARGET = $(DIR_BIN)/$(TARGET) 

#对系统内置变量的值进行设置,CC是用于指定编译器的架构 CC变量的值默认是gcc
CC = arm-linux-gcc

#编译选项的变量 CFLAGS   用于指定编译的选项  例如 -I 指定头文件路径  -L 用于指定库的路径
CFLAGS = -I$(DIR_INC) -L$(DIR_LIB) 

#用于记录可执行文件的依赖列表
OBJS = demo.o

#是一套规则,可以利用这套规则得到最终目标  @ 属于自动化变量 表示当前规则中的目标的完整名称  
$(BIN_TARGET):$(OBJS) 
	$(CC) $(CFLAGS) $^ -o $@

#是一套规则,可以利用这套规则得到目标   
$(OBJS):$(DIR_SRC)/demo.c
	 $(CC) -c $^ -o $@


#伪目标，伪目标可以省略先决条件
.PHONY: clean 
clean:
	@ rm *.o $(BIN_TARGET)
	

